//1.引入
import Vue from "vue"
import axios from "axios"
import qs from "querystring"
import { errorAlert } from "../utils/alert"
import store from "../store"
import router from "../router"

//2.环境配置
//开发环境
if (process.env.NODE_ENV == "development") {
    Vue.prototype.$pre = "http://localhost:3000"
}
//生产环境
if (process.env.NODE_ENV == "production") {
    Vue.prototype.$pre = ""
}

//3.请求拦截
axios.interceptors.request.use(config => {

    if (config.url !== "/api/userlogin") {
        config.headers.authorization = store.state.info.token
    }
    return config
        // console.log("=========================");
        // console.log(config);
    return config
})

//4.响应拦截
axios.interceptors.response.use(res => {
    //统一打印
    console.group("本次请求地址：" + res.config.url)
    console.log(res);
    console.groupEnd()

    //统一处理失败
    if (res.data.code !== 200) {
        errorAlert(res.data.msg)
    }

    //响应拦截加掉线处理
    if (res.data.msg == "登录已过期或访问权限受限") {
        //清除vuex和本地存储的数据
        store.dispatch("changeInfo", {})

        //跳转页面
        router.replace("/login")
    }

    return res;
})

//get 用来发起get请求的
//URL：请求地址
//params:请求参数 默认是{}
// 案例：get("/api/login",{phone:"1",password:"12313"}).then()
export const get = (url, params = {}) => {
    return axios({
        url,
        method: "get",
        params
    })
}

//post用来发起post请求
//url:请求地址
//params:请求参数 默认{}
//isFile:是否有文件 true：有文件，false就是没有文件 默认是false
// 案例：post("/api/login",{phone:"1"},true).then(res=>{})
export const post = (url, params = {}, isFile = false) => {
    let data = null
    if (isFile) {
        //有文件
        data = new FormData()
        for (let i in params) {
            data.append(i, params[i])
        }
    } else {
        //无文件
        data = qs.stringify(params)
    }
    return axios({
        url,
        method: "post",
        data
    })
}